﻿using BCCommon;
using BCCommon.Enums;
using BCCommon.Enums.Driver;
using System;
using System.ComponentModel.DataAnnotations;

namespace BCDto.TMS.Driver
{
    public class DriverRequestDto
    {
        /// <summary>
        /// 手机号
        /// </summary>	
        [Display(Name = "手机号")]
        [Required(ErrorMessage = "{0} 不能为空")]
        [RegularExpression(RegexPatterns.PHONE, ErrorMessage = "{0} 应为11位中国运营商手机号")]
        public string Phone { get; set; }
        /// <summary>
        /// 司机昵称
        /// </summary>	
        [Display(Name = "司机昵称")]
        public string Name { get; set; }
        /// <summary>
        /// 司机图像
        /// </summary>	
        [Display(Name = "司机图像")]
        public string DriverPhotoPath { get; set; }
        /// <summary>
        /// 性别
        /// </summary>
        [Display(Name = "性别")]
        public Sex Sex { get; set; }
        /// <summary>
        /// 车型Id
        /// </summary>
        [Display(Name = "车型Id")]
        [Required(ErrorMessage = "{0} 不能为空")]
        public int VehicleTypeId { get; set; }
        /// <summary>
        /// 车辆长度
        /// </summary>
        [Display(Name = "车辆长度")]
        public decimal VehicleLength { get; set; }

        /// <summary>
        /// 车辆宽度
        /// </summary>
        [Display(Name = "车辆宽度")]
        public decimal VehicleWidth { get; set; }

        /// <summary>
        /// 车辆高度
        /// </summary>
        [Display(Name = "车辆高度")]
        public decimal VehicleHeight { get; set; }

        /// <summary>
        /// 车辆载货立方
        /// </summary>
        [Display(Name = "车辆载货立方")]
        public decimal VehicleStere { get; set; } 

        /// <summary>
        /// 车辆载重量
        /// </summary>
        [Display(Name = "车辆载重量")]
        public int VehicleWeight { get; set; }

        /// <summary>
        /// 车牌号
        /// </summary>
        [Display(Name = "车牌号")]
        [Required(ErrorMessage = "{0} 不能为空")]
        public string VehicleNo { get; set; }

        /// <summary>
        /// 驾驶证
        /// </summary>	
        [Display(Name = "驾驶证")]
        [Required(ErrorMessage = "{0} 不能为空")]
        public string DriverLicense { get; set; }
        /// <summary>
        /// 驾驶证副页
        /// </summary>	
        [Display(Name = "驾驶证副页")]
        [Required(ErrorMessage = "{0} 不能为空")]
        public string DriverLicenseDeputyPage { get; set; }
        /// <summary>
        /// 行驶证正面图片
        /// </summary>
        [Display(Name = "行驶证正面图片")]
        [Required(ErrorMessage = "{0} 不能为空")]
        public string VehicleLicense { get; set; }
        /// <summary>
        /// 行驶证车照图片
        /// </summary>
        [Display(Name = "行驶证车照图片")]
        [Required(ErrorMessage = "{0} 不能为空")]
        public string VehicleLicenseDeputyPage { get; set; }
        /// <summary>
        /// 车辆照片(前方)
        /// </summary>	
        [Display(Name = "车辆照片(前方)")]
        [Required(ErrorMessage = "{0} 不能为空")]
        public string VehiclePhotoFrontPath { get; set; }
        /// <summary>
        /// 车辆照片(背后)
        /// </summary>	
        [Display(Name = "车辆照片(背后)")]
        [Required(ErrorMessage = "{0} 不能为空")]
        public string VehiclePhotoBackPath { get; set; }
        /// <summary>
        /// 人车合影
        /// </summary>	
        [Display(Name = "人车合影")]
        [Required(ErrorMessage = "{0} 不能为空")]
        public string PersonCarPhoto { get; set; }
        /// <summary>
        /// 车辆保险单
        /// </summary>	
        [Display(Name = "车辆保险单")]
        [Required(ErrorMessage = "{0} 不能为空")]
        public string CarInsurancePolicy { get; set; }
        /// <summary>
        /// 身份证号
        /// </summary>	
        [Display(Name = "身份证号")]
        [Required(ErrorMessage = "{0} 不能为空")]
        [RegularExpression(RegexPatterns.ID_CARD, ErrorMessage = "{0} 应为18位中国公民有效身份证号")]
        public string IdentityCardNo { get; set; }
        /// <summary>
        /// 身份证正面照片
        /// </summary>	
        [Display(Name = "身份证正面照片")]
        [Required(ErrorMessage = "{0} 不能为空")]
        public string IdentityCardPath { get; set; }
        /// <summary>
        /// 身份证背面照片
        /// </summary>	
        [Display(Name = "身份证背面照片")]
        [Required(ErrorMessage = "{0} 不能为空")]
        public string IdentityCardBackPath { get; set; }

        /// <summary>
        /// 真实姓名
        /// </summary>
        [Display(Name = "真实姓名")]
        [Required(ErrorMessage = "{0} 不能为空")]
        public string RealName { get; set; }
        /// <summary>
        /// 是否实名认证
        /// </summary>
        public bool IsRealNameVerified { get; set; }
        /// <summary>
        /// 实名认证拒绝原因
        /// </summary>
        public string RealNameVerifiesRefuse { get; set; }
        /// <summary>
        /// 紧急联系电话
        /// </summary>	
        [Display(Name = "紧急联系电话")]
        [Required(ErrorMessage = "{0} 不能为空")]
        public string EmergencyPhone { get; set; }
        /// <summary>
        /// 注册省份编码
        /// </summary>	
        [Display(Name = "注册省份编码")]
        [Required(ErrorMessage = "{0} 不能为空")]
        [StringLength(6, ErrorMessage = "{0}长度最大为 {1} 位")]
        [RegularExpression(RegexPatterns.NUMBER, ErrorMessage = "{0} 应全部是数字")]
        public string ProvinceCode { get; set; }
        /// <summary>
        /// 注册城市编码
        /// </summary>	
        [Display(Name = "注册城市编码")]
        [Required(ErrorMessage = "{0} 不能为空")]
        [StringLength(6, ErrorMessage = "{0}长度最大为 {1} 位")]
        [RegularExpression(RegexPatterns.NUMBER, ErrorMessage = "{0} 应全部是数字")]
        public string CityCode { get; set; }
        /// <summary>
        /// 注册区/县编码
        /// </summary>	
        [Display(Name = "注册区/县编码")]
        public string CountyCode { get; set; }
        /// <summary>
        /// 是否接受指派
        /// </summary>
        [Display(Name = "是否接受指派")]
        public bool IsAcceptAssign { get; set; }
        /// <summary>
        /// 是否接收零担推送
        /// </summary>
        [Display(Name = "是否接收零担推送")]
        public bool IsReceivePartLoad { get; set; }
        /// <summary>
        /// 是否使用计费规则
        /// </summary>
        [Display(Name = "是否使用计费规则")]
        public bool IsUseBillingRules { get; set; }
        /// <summary>
        /// 是否已培训
        /// </summary>
        [Display(Name = "是否已培训")]
        public bool? IsTrained { get; set; }
        /// <summary>
        /// 是否培训通过
        /// </summary>
        [Display(Name = "是否培训通过")]
        public bool? IsTrainPassed { get; set; }
        /// <summary>
        /// 培训通过时间
        /// </summary>
        [Display(Name = "培训通过时间")]
        public DateTime? TrainPassedTime { get; set; }
        /// <summary>
        /// 登录密码
        /// </summary>
        [Display(Name = "登录密码")]
        public string Password { get; set; }
        /// <summary>
        /// 工作状态(工作中、休息中、已停运)
        /// </summary>
        [Display(Name = "工作状态(工作中、休息中、已停运)")]
        public DriverWorkingStatus WorkingStatus { get; set; }
        /// <summary>
        /// 是否是保利润
        /// </summary>
        public bool IsGuaranteedProfit { get; set; }       

    }
}
